﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using DO = AdminCondominio.Dominio;
using PE = AdminCondominio.Persistencia;
  
namespace AdminCondominio.Pruebas
{
    [TestFixture]
    public class TestTipoAreaComunDAO
    {
        PE.TipoAreaComunDAO _TipoAreaComunDAO;
        [Test]
        public void TestCrear() 
        {
            DO.TipoAreaComun _TipoAreaComun = new DO.TipoAreaComun();
            _TipoAreaComunDAO = new PE.TipoAreaComunDAO(); 
            _TipoAreaComun.DesAreaComun = "Area Comun De Segunda Prueba";

            int FilasAfectadas=0;

            Assert.DoesNotThrow(delegate
            {
                FilasAfectadas = _TipoAreaComunDAO.InserTipoAreaComun(_TipoAreaComun);
            });
            Assert.GreaterOrEqual(1, FilasAfectadas);      
        }

        [Test]
        public void TesListar()
        {
            String DesAreaComun = "";
            _TipoAreaComunDAO = new PE.TipoAreaComunDAO(); 
            List<DO.TipoAreaComun> ListaTipoAreaComun = new List<DO.TipoAreaComun>();

            Assert.DoesNotThrow(delegate
            {
                ListaTipoAreaComun = _TipoAreaComunDAO.ListarTipoAreaComun(DesAreaComun);
            });

            //Assert.DoesNotThrow(delegate
            //{
                    //ListaTipoAreaComun = _TipoAreaComunDAO.ListarTipoAreaComun(DesAreaComun);    
            //});

            Assert.IsNotNull(ListaTipoAreaComun);
            Assert.GreaterOrEqual(ListaTipoAreaComun.Count,1); 
        }

        [Test]
        public void OptenerTipoAreaComun()
        {
            _TipoAreaComunDAO = new PE.TipoAreaComunDAO();
            DO.TipoAreaComun _TipoAreaComun = new DO.TipoAreaComun();
            _TipoAreaComun.CoTipoAreaComun = 1;  
            Assert.DoesNotThrow(delegate
            {
                _TipoAreaComun = _TipoAreaComunDAO.OptenerTipoAreaComun(_TipoAreaComun);
            });

            Assert.IsNotNull(_TipoAreaComun);
            Assert.IsNotNullOrEmpty(_TipoAreaComun.DesAreaComun);    
        }

        [Test]
        public void TesUpdate()
        {
            _TipoAreaComunDAO = new PE.TipoAreaComunDAO();
            DO.TipoAreaComun _TipoAreaComun = new DO.TipoAreaComun();
            _TipoAreaComun.CoTipoAreaComun = 1;
            _TipoAreaComun.DesAreaComun = "Cambio de Nombre de area";
            int NunFilasAfec=0;
            Assert.DoesNotThrow(delegate
            {
                NunFilasAfec = _TipoAreaComunDAO.UpdateTipoAreaComun(_TipoAreaComun);
            });

            Assert.AreEqual(NunFilasAfec, 1);
            
            Assert.DoesNotThrow(delegate
            {
                _TipoAreaComun = _TipoAreaComunDAO.OptenerTipoAreaComun(_TipoAreaComun);
            });
            Assert.IsNotNullOrEmpty(_TipoAreaComun.DesAreaComun);
        }

        [Test]
        public void TesDelete()
        {
            _TipoAreaComunDAO = new PE.TipoAreaComunDAO();
            DO.TipoAreaComun _TipoAreaComun = new DO.TipoAreaComun();
            _TipoAreaComun.CoTipoAreaComun = 1;
            int NunFilasAfec = 0;
            Assert.DoesNotThrow(delegate
            {
                NunFilasAfec = _TipoAreaComunDAO.DeleteTipoAreaComun(_TipoAreaComun);
            });

            Assert.AreEqual(NunFilasAfec, 1);

            Assert.DoesNotThrow(delegate
            {
                _TipoAreaComun = _TipoAreaComunDAO.OptenerTipoAreaComun(_TipoAreaComun);
            });
            Assert.IsNull(_TipoAreaComun);
        }

    }
}